package com.group01.dto.User;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.group01.annotation.Flag;
import com.group01.annotation.Flag2;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.URL;

import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.Date;

/**
 * @Description 新增用户信息传输对象DTO
 * @Author 翟玉龙
 * @Date 2024/6/21
 */

@AllArgsConstructor
@NoArgsConstructor
@Data
@Accessors(chain = true)
public class UserInsertInfoDTO {
    /**
     * 用户头像
     */
    @URL(message = "头像地址格式不正确")
    private String avatar;

    /**
     * 用户生日
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birthday;

    /**
     * 用户性别(0男，1女)
     */
    @Flag
    private String gender;

    /**
     * 登录密码
     */
    @Pattern(regexp = "^(?=.*\\d)(?=.*[A-z])[\\da-zA-Z]{6,18}$",message = "密码必须由6~18位数字和字母组成")
    private String password;

    /**
     * 手机号
     */
    @Pattern(regexp = "^1[3456789]\\d{9}$", message = "手机号长度不正确") // 校验手机号
    private String phone;

    /**
     * 注册时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date registerTime;

    /**
     * 角色编号
     1. 管理员
     2. 普通用户
     */
    @DecimalMin(value = "1",message = "角色编号不正确")
    @DecimalMax(value = "2",message = "角色编号不正确")
    private Integer roleId;

    /**
     * 用户状态(0正常，1禁用)
     */
    @Flag2
    private Integer status;

    /**
     * 用户名
     */
    @NotNull(message = "用户名不能为空")
    @Pattern(regexp = "^\\S{3,16}$",message = "用户名长度为3~16位")
    private String username;

}
